/*
* 题目描述：
A A 2 2 3 3 4 4， 一共4对扑克牌。请你把它们排成一行。
要求：两个A中间有1张牌，两个2之间有2张牌，两个3之间有3张牌，两个4之间有4张牌。

请填写出所有符合要求的排列中，字典序最小的那个。

例如：22AA3344 比 A2A23344 字典序小。当然，它们都不是满足要求的答案。

请通过浏览器提交答案。“A”一定不要用小写字母a，也不要用“1”代替。字符间一定不要留空格。
* */

//2342A3A4

import java.util.ArrayList;

public class 第七题 {
    public static void main(String[] args) {
        String s = "2342A3A4";
        String a = "4A3A2432";
        System.out.println(a.compareTo(s));
    }

    ArrayList<String> res = new ArrayList<>();

//    public static void main(String[] args) {
//
//        getPermutation("AA223344");
//        //System.out.println(res);
//    }

    public static boolean isSame(char[] arr, int first, int end) {
        for (int i = first; i < end; i++) {
            if (arr[i] == arr[end]) {
                return false;
            }
        }
        return true;
    }

    public static void getPermutation(String A) {
        char[] arr = A.toCharArray();
        getPermutationCore(arr, 0);
    }

    public static void getPermutationCore(char[] arr, int k) {
        if (k == arr.length) {
            String s = new String(arr);
            ArrayList<Integer> A = new ArrayList<>();
            ArrayList<Integer> two = new ArrayList<>();
            ArrayList<Integer> three = new ArrayList<>();
            ArrayList<Integer> four = new ArrayList<>();
            for (int i = 0; i < s.length(); i++) {
                if (s.charAt(i) == 'A') {
                    A.add(i);
                }
                if (s.charAt(i) == '2') {
                    two.add(i);
                }
                if (s.charAt(i) == '3') {
                    three.add(i);
                }
                if (s.charAt(i) == '4') {
                    four.add(i);
                }

            }
            if (A.get(1) - A.get(0) == 2 && two.get(1) - two.get(0) == 3 &&
                    three.get(1) - three.get(0) == 4 && four.get(1) - four.get(0) == 5) {
                System.out.println(s);
            }
            //System.out.println(new String(arr));
        }

        for (int i = k; i < arr.length; i++) {
            if (isSame(arr, k, i)) {
                swap(arr, k, i);
                getPermutationCore(arr, k + 1);
                swap(arr, k, i); // 回溯
            }
        }
    }

    public static void swap(char[] arr, int k, int i) {
        char tem = arr[k];
        arr[k] = arr[i];
        arr[i] = tem;
    }
}
